/* * Author: Chris Seguin * * This software has been developed under the copyleft * rules of the GNU General Public License. Please * consult the GNU General Public License for more * details about use and distribution of this software. */ package org.acm.seguin.ide.jbuilder; import com.borland.primetime.ide.Context; import com.borland.primetime.ide.NodeViewerFactory; import com.borland.primetime.ide.NodeViewer; import com.borland.primetime.node.Node; import org.acm.seguin.ide.common.MultipleDirClassDiagramReloader; import org.acm.seguin.summary.PackageSummary; /** * Factory for node viewers * *@author Chris Seguin */ public class UMLNodeViewerFactory implements NodeViewerFactory { private MultipleDirClassDiagramReloader reloader; private static UMLNodeViewerFactory factory = null; /** * Constructor for the UMLNodeViewerFactory object */ private UMLNodeViewerFactory() { reloader = new JBuilderClassDiagramLoader(); } /** * Gets the class diagram reloader * *@return the reloader */ public MultipleDirClassDiagramReloader getReloader() { return reloader; } /** * Determines if this factory can view this type of file * *@param node the type of file *@return true if it can be displayed */ public boolean canDisplayNode(Node node) { return node instanceof UMLNode; } /** * Creates the node viewer * *@param context the information about what is to be displayed *@return the viewer */ public NodeViewer createNodeViewer(Context context) { if (canDisplayNode(context.getNode())) { if (!reloader.isNecessary()) { reloader.setNecessary(true); reloader.reload(); } UMLNodeViewer viewer = new UMLNodeViewer(context, reloader); return viewer; } return null; } /** * Creates the node viewer * *@param summary Description of Parameter *@return the viewer */ public NodeViewer createNodeViewer(PackageSummary summary) { if (!reloader.isNecessary()) { reloader.setNecessary(true); reloader.reload(); } UMLNodeViewer viewer = new UMLNodeViewer(summary, reloader); return viewer; } /** * Gets the Factory attribute of the UMLNodeViewerFactory class * *@return The Factory value */ public static UMLNodeViewerFactory getFactory() { if (factory == null) { factory = new UMLNodeViewerFactory(); } return factory; } }